/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Procesos;

import ClasesGenerales.Itinerario;
import ClasesGenerales.PNR;
import ClasesGenerales.Passenger;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author USER
 */
public class ProcesarPNR {

    public PNR ProcesarArchivoReserva(int oOpcion, String oCodigoPNR) throws Exception {
        PNR oPNR = new PNR();
        LectorDatos oLectorDatos = null;
        ArrayList oReservaArrayList = null;

        try {
            oLectorDatos = new LectorDatos();
            oReservaArrayList = new ArrayList();
            oReservaArrayList = oLectorDatos.LeerArchivoTxt(oOpcion, oCodigoPNR);
            
            if (oReservaArrayList != null) {
                oPNR.setCodigo(oCodigoPNR);
                oPNR.setObjPasseger(RecuperarListaPasseneger("P", ",", oReservaArrayList));
                oPNR.setObjItinerario(RecuperarListaItinerario("I", ",", oReservaArrayList));
            }

        } finally {
            oLectorDatos = null;
        }

        return oPNR;
    }

    private List<Passenger> RecuperarListaPasseneger(String oTipo, String oCorte, ArrayList oReservaArrayList) throws Exception {
        List ListaResultado = null;
        Passenger oPassenger = null;
        try {

            if (oReservaArrayList != null) {
                for (int i = 0; i < oReservaArrayList.size(); i++) {
                    if (oReservaArrayList.get(i).toString().substring(0, 1).toUpperCase().equals(oTipo)) {
                        oPassenger = new Passenger();

                        String[] oSplit = oReservaArrayList.get(i).toString().split(oCorte);

                        oPassenger.setNumPassenger(Integer.parseInt(oSplit[0].substring(1).toString())); //Numero
                        oPassenger.setStrPassengerName(oSplit[1]); // Nombre Pasajero
                        oPassenger.setStrPassengerSurname(oSplit[2]); // Apellido Pasajero
                        oPassenger.setStrDateBirthday(null); // Fecha de Nacimento
                        oPassenger.setStrGenero(null);  // Genero
                        oPassenger.setStrPassenegerType(oSplit[3]); // Tipo de Pasajero;
                        oPassenger.setStrReferenceType(oSplit[4]); // Tipo de Docuemento Pasajero;
                        oPassenger.setStrReferenceNumber(oSplit[5]); // Numero de Documento de Pasajero;
                        oSplit = null;

                        if (ListaResultado == null) {
                            ListaResultado = new ArrayList();
                        }

                        ListaResultado.add(oPassenger);
                    }
                }
            }

        } finally {
            oTipo = null;
            oReservaArrayList = null;
            oPassenger = null;
        }

        return ListaResultado;
    }

    private List<Itinerario> RecuperarListaItinerario(String oTipo, String oCorte, ArrayList oReservaArrayList) throws Exception {
        List ListaResultado = null;
        Itinerario oItinerario = null;

        try {

            if (oReservaArrayList != null) {
                for (int i = 0; i < oReservaArrayList.size(); i++) {
                    if (oReservaArrayList.get(i).toString().substring(0, 1).toUpperCase().equals(oTipo)) {
                        oItinerario = new Itinerario();

                        String[] oSplit = oReservaArrayList.get(i).toString().split(oCorte);

                        oItinerario.setNumItinerario(Integer.parseInt(oSplit[0].substring(1).toString())); //Numero
                        oItinerario.setStrAir(oSplit[1]); // Aerolinea
                        oItinerario.setNumFly(oSplit[2]); // Nﾃｺmero de Vuelo
                        oItinerario.setStrClase(oSplit[3]); // Clase
                        oItinerario.setStrStatus(oSplit[4]); // Estado del Iitnerario
                        oItinerario.setStrDateTimeDeparture(oSplit[5]);  // Dﾃｭa y Hora de Salida
                        oItinerario.setStrDateTimeArryval(oSplit[6]); // Dﾃｭa y Hora de Llegada
                        oItinerario.setStrCityDeparture(oSplit[7]); // Ciuadad de Salida;
                        oItinerario.setStrCityArrival(oSplit[8]); // Ciudad de Llegada;
                        oSplit = null;

                        if (ListaResultado == null) {
                            ListaResultado = new ArrayList();
                        }

                        ListaResultado.add(oItinerario);
                    }
                }
            }

        } finally {
            oTipo = null;
            oReservaArrayList = null;
            oItinerario = null;
        }

        return ListaResultado;
    }
}
